【Security Hub修復手順】[CloudFront.13] CloudFront ディストリビューションでは、オリジンアクセスコントロールを有効にする必要があります
こんにちは、AWS事業本部@福岡オフィスのべこみん(@beco_minn)です。
皆さん、お使いのAWS環境のセキュリティチェックはしていますか?
当エントリでは、AWS Security HubによるAWS環境のセキュリティ状況スコアリングに該当する項目についての修復手順をご紹介します。
本記事の対象コントロール
[CloudFront.13] CloudFront ディストリビューションでは、オリジンアクセスコントロールを有効にする必要があります
[CloudFront.13] CloudFront distributions should use origin access control
前提条件
本記事はAWS Security Hubで「AWS基礎セキュリティのベストプラクティススタンダード」を利用されている方向けの内容となります。 AWS Security Hubの詳細についてはこちらのブログをご覧ください。
対象コントロールの説明
Amazon CloudFrontディストリビューションでS3をオリジンとする場合、オリジンへのアクセスを制御するためにオリジンアクセスコントロール(OAC)の利用が推奨されています。
本コントロールではそのOACが設定されているかどうかがチェックされ、OACが設定されていない場合にコントロールは失敗します。
OACを設定することで、ユーザーがオリジンのS3バケット内コンテンツに直接アクセスすることを防ぎます。コンテンツへの意図しないアクセスは防ぐべきなので、本設定の利用を推奨します。
また、OACに似た仕組みでオリジンアクセスアイデンティティ(OAI)というものがありますが、OAIではSSE-KMSを使用しているS3バケットがサポートされていないなどの理由から利用が推奨されていません。つまり、OAIに比べてOACの方がセキュアな仕組みになっています。
詳しくは下記をご参照ください。
ちなみにOAIの利用を推奨する[CloudFront.2]というSecurity Hubのコントロールも存在します。[CloudFront.2]はそのうち削除(無効化)されるかと思いますが、本記事でOACの設定を行なっている場合はついでに[CloudFront.2]を無効にしておきましょう。
[CloudFront.2] CloudFront ディストリビューションでは、オリジンアクセスアイデンティティを有効にする必要があります - AWS Security Hub
修復手順
1. ステークホルダーに確認を取る
ステークホルダー(リソースの作成者や管理している部署などの関係者)に以下を確認します。
- オリジンのS3バケットに対するアクセスを、CloudFrontディストリビューションからのアクセスのみに制限しても良いか
※CloudFrontディストリビューションからのアクセスのみに制限することを推奨します。
2. 対象のリソースを把握する
SecurityHubの結果より、対象のディストリビューションを確認します。バージニア北部リージョン(us-east-1)の場合、下記URLから確認可能です。
https://us-east-1.console.aws.amazon.com/securityhub/home?region=us-east-1#/controls/CloudFront.13
下図赤枠部が対象のディストリビューションIDです。
3. OACを有効化
対象ディストリビューションのコンソールより対象のオリジンを選択し、「編集」から編集画面を開きます。
オリジンアクセスとして Origin access control settings (recommended)
を選択します。
OACを選択した場合、下記の設定が必要です。
- 利用するコントロール設定を指定する
- オリジンのS3バケットにバケットポリシーを設定する
まずは利用するコントロール設定を指定します。既に作成している場合はプルダウンから指定可能です。
無い場合は「コントロール設定を作成」から作成します。
作成後、自動的に作成したコントロール設定が設定されている状態になります。
次はオリジンのS3バケットにポリシーを設定します。
下図の「ポリシーをコピー」をクリックすると必要なポリシーステートメントをコピー出来るので、コピーします。また、「S3バケットアクセス許可に移動」のリンク先を別タブで開いておきます。
ここでオリジン編集の変更を保存します。
次に、先ほど別タブで開いた対象S3バケットのアクセス許可コンソールに移動します。
バケットポリシーの編集を行います。
先ほどコピーしたポリシーステートメントをそのままペーストし、変更を保存します。
作業は以上です。
オリジンのS3バケットをSSE-KMSで暗号化している場合
オリジンのS3バケット内コンテンツをSSE-KMSで暗号化している場合、OACによりCloudFrontディストリビューションにKMS関連のアクセス許可を付与する必要があります。
詳しくは下記ドキュメント内「SSE-KMS」の項を参考に、S3バケットポリシーにKMS関連のポリシーステートメントを追加してください。
最後に
今回は、AWS Security HubによるAWS環境のセキュリティ状況スコアリングに該当する項目についての修正手順をご紹介しました。
コントロールを修正して、お使いのAWS環境のセキュリティをパワーアップさせましょう!
最後までお読みいただきありがとうございました!どなたかのお役に立てれば幸いです。
以上、べこみんでした。
クラスメソッドメンバーズをご契約の皆さまに
AWS Security Hub 「基礎セキュリティのベストプラクティス」の各チェック項目(コントロール)に対する弊社としての推奨対応やコメントを記載しているClassmethod Cloud Guidebook を提供しています。 クラスメソッドメンバーズポータルの「お役立ち情報」→「組織的な AWS 活用のためのノウハウ」からご参照ください。